Software Fault Interactions and Implications for Software Testing